/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * dlgMostrarIngreso.java
 *
 * Created on 15/11/2011, 02:55:49 PM
 */

package visual.Ingreso;

import bentity.beAlmacen;
import bentity.beCombo;
import bentity.beCoordenada;
import bentity.beEntrada;
import bentity.beLote;
import bentity.bePallet;
import bentity.beProducto;
import bentity.beUbicacion;
import blogic.blAlmacen;
import blogic.blHelper;
import blogic.blProducto;
import blogic.blRack;
import blogic.blUbicacion;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferStrategy;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import visual.Seguridad.visualHelper;

/**
 *
 * @author chokewanka
 */
public class dlgMostrarIngreso extends javax.swing.JDialog implements KeyListener,MouseListener{
    private boolean esPrimeraVez = true;
    private BufferStrategy bfs = null;
    private ArrayList<beLote> arrLotes=null;
    private beAlmacen datosAlmacen = null;
    private ArrayList<beEntrada> entradas = null;
    private blHelper blh = new blHelper();
    private int pisoActual=0;

    private ArrayList<beUbicacion> arrUbics=new ArrayList<beUbicacion>(); //Ubicaciones de los pallets ingresados
    private ArrayList<beUbicacion> ubicsPosibles=new ArrayList<beUbicacion>(); // Ubicaciones candidatas para un pallet que se quiere reubicar
    private beUbicacion ubicSeleccionada= null; //Ubicacion seleccionada con un clic
    private ArrayList<beUbicacion> ubicsDisponibles=new ArrayList<beUbicacion>(); //Ubicaciones no bloqueadas ni llenas

    private Point puntoCentrado=new Point();
    private int TAM_UNIT=10;
    private int racksXCol=-1;
    private int racksXFila=-1;
    private int tamRack=-1;

    private boolean seDebeReubicar=false;
    private boolean seDebeGuardar=false;

    private Point puntoOrigen=new Point(100,140);
    //private Point puntoFin=new Point(590, 210);
    private Point puntoFin=new Point(400, 280);

    public boolean getSeDebeReubicar() {
        return seDebeReubicar;
    }

    public void setSeDebeReubicar(boolean seDebeReubicar) {
        this.seDebeReubicar = seDebeReubicar;
    }

    public boolean getSeDebeGuardar() {
        return seDebeGuardar;
    }

    public void setSeDebeGuardar(boolean seDebeGuardar) {
        this.seDebeGuardar = seDebeGuardar;
    }

    public ArrayList<beLote> getArrLotes() {
        return arrLotes;
    }

    public void setArrLotes(ArrayList<beLote> arrLotes) {
        this.arrLotes = arrLotes;
    }

    @Override
    public boolean isFocusable(){
            return true;
    }


    /** Creates new form dlgMostrarIngreso */
    public dlgMostrarIngreso(java.awt.Frame parent, boolean modal,ArrayList<beLote> arrLotes) {
        super(parent, modal);
        initComponents();

        addMouseListener(new java.awt.event.MouseAdapter() {
            @Override
                    public void mouseClicked(java.awt.event.MouseEvent evt) {
                        formMouseClicked(evt);
            }

        });

        addKeyListener(this);

        ArrayList<bePallet> arrPallets=new ArrayList<bePallet>();
        

        try{

            
            
            this.arrLotes=arrLotes;
            for(int i=0;i<this.arrLotes.size();i++){
                arrPallets=this.arrLotes.get(i).getPallets();
                for(int j=0;j<arrPallets.size();j++){
                    this.arrUbics.add(arrPallets.get(j).getUbicacion());
                }
            }

            this.ubicsDisponibles=(new blUbicacion().dameTodasLasUbicacionesDisponibles());
            this.entradas = (new blAlmacen()).buscarObjsEntrada();
            this.datosAlmacen = blh.obtenerDatosAlmacen();
            this.racksXCol=datosAlmacen.getFilas();
            this.racksXFila=datosAlmacen.getRacksXFila();
            this.tamRack=datosAlmacen.getUbsxrack();
            llenarComboPiso();
            this.setAlwaysOnTop(true);
            this.setModal(true);

        }
        catch(Exception e){
            e.printStackTrace();
            visualHelper.mostrarMensajeError("ha ocurrido un error.");
        }

        visualHelper.centrarDialogoEnPantalla(this);


        this.puntoFin=visualHelper.AjustarPuntosSegunEscala(this.puntoOrigen, this.puntoFin, TAM_UNIT);
        this.puntoCentrado.x=this.puntoOrigen.x;
        this.puntoCentrado.y=this.puntoOrigen.y;
        
        //puntoCentrado=visualHelper.centrarDibujo(this.getSize(), blh.calcularNumeroColumnas(racksXFila, tamRack),blh.calcularNumeroFilas(racksXCol) , TAM_UNIT);

        repaint();
    }

    @Override
    public void paint(Graphics g){
        ArrayList<beUbicacion> arrAux=null;

        try{
        if (this.esPrimeraVez){
            this.esPrimeraVez=false;
            this.createBufferStrategy(2);
            bfs =this.getBufferStrategy();
        }
            if (bfs != null){
                Graphics g1=bfs.getDrawGraphics();
                super.paint(g1);

                visualHelper.pintarAlmacenConEntradasCOPIA(g1, entradas, racksXCol, racksXFila, tamRack, TAM_UNIT, this.puntoCentrado,this.puntoOrigen,this.puntoFin, Color.BLUE);

                if(this.ubicsDisponibles!=null)
                    visualHelper.pintarUbicacionesEspecificandoColorCOPIA(g1, racksXCol, racksXFila, tamRack, TAM_UNIT, this.puntoCentrado,this.puntoOrigen,this.puntoFin, extraerUbicsDeUnPiso(this.ubicsDisponibles,pisoActual), Color.GREEN);

                if(this.arrUbics!=null)
                    visualHelper.pintarUbicacionesEspecificandoColorCOPIA(g1,datosAlmacen.getFilas(), datosAlmacen.getRacksXFila(), datosAlmacen.getUbsxrack(),TAM_UNIT, this.puntoCentrado,this.puntoOrigen,this.puntoFin,extraerUbicsDeUnPiso(arrUbics,pisoActual),Color.RED);

                if(this.ubicsPosibles!=null)
                    visualHelper.pintarUbicacionesEspecificandoColorCOPIA(g1, racksXCol, racksXFila, tamRack, TAM_UNIT, this.puntoCentrado,this.puntoOrigen,this.puntoFin, extraerUbicsDeUnPiso(this.ubicsPosibles,pisoActual), Color.YELLOW);

                if(this.ubicSeleccionada!=null){
                    arrAux=new ArrayList<beUbicacion>();
                    arrAux.add(ubicSeleccionada);
                    if(this.ubicSeleccionada.getCoordenadas().getPiso()==this.pisoActual)
                        visualHelper.pintarUbicacionesEspecificandoColorCOPIA(g1,datosAlmacen.getFilas(), datosAlmacen.getRacksXFila(), datosAlmacen.getUbsxrack(),TAM_UNIT, this.puntoCentrado,this.puntoOrigen,this.puntoFin,arrAux,Color.GRAY);
                }
                visualHelper.pintarMallaCOPIA(g1,datosAlmacen.getFilas(), datosAlmacen.getRacksXFila(), datosAlmacen.getUbsxrack(),TAM_UNIT, this.puntoCentrado,this.puntoOrigen,this.puntoFin);

                bfs.show();
            }


            
            
        }
        catch(Exception e){
            e.printStackTrace();
            System.out.println("Ocurrió un error al pintar el mapa");
        }
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        btnCerrar = new javax.swing.JButton();
        btnGuardar = new javax.swing.JButton();
        lblTitulo = new javax.swing.JLabel();
        txtProducto = new javax.swing.JTextField();
        lblProducto = new javax.swing.JLabel();
        txtPallet = new javax.swing.JTextField();
        lblTipoPallet = new javax.swing.JLabel();
        txtTipoProducto = new javax.swing.JTextField();
        lblTipoProducto = new javax.swing.JLabel();
        txtVencimiento = new javax.swing.JTextField();
        lblVencimiento = new javax.swing.JLabel();
        cbxPiso = new javax.swing.JComboBox();
        lblPiso = new javax.swing.JLabel();
        btnReubicar = new javax.swing.JButton();
        lblInstrucciones = new javax.swing.JLabel();
        pnlLeyenda = new javax.swing.JPanel();
        lblTipoPallet1 = new javax.swing.JLabel();
        lblNoDisponibles1 = new javax.swing.JLabel();
        lblUbicacionesLibres = new javax.swing.JLabel();
        lblUbicacionesIngresadas = new javax.swing.JLabel();
        pnlRojo = new javax.swing.JPanel();
        pnlVerde = new javax.swing.JPanel();
        pnlAzul = new javax.swing.JPanel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setAlwaysOnTop(true);
        setMinimumSize(new java.awt.Dimension(670, 550));
        addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                formMouseClicked(evt);
            }
        });
        addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                formKeyPressed(evt);
            }
        });
        getContentPane().setLayout(null);

        btnCerrar.setBackground(new java.awt.Color(240, 235, 226));
        btnCerrar.setFont(new java.awt.Font("Dialog", 0, 12));
        btnCerrar.setForeground(new java.awt.Color(0, 0, 0));
        btnCerrar.setText("Cancelar");
        btnCerrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCerrarActionPerformed(evt);
            }
        });
        getContentPane().add(btnCerrar);
        btnCerrar.setBounds(160, 480, 100, 27);

        btnGuardar.setBackground(new java.awt.Color(240, 235, 226));
        btnGuardar.setFont(new java.awt.Font("Dialog", 0, 12));
        btnGuardar.setForeground(new java.awt.Color(0, 0, 0));
        btnGuardar.setText("Guardar");
        btnGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnGuardarActionPerformed(evt);
            }
        });
        getContentPane().add(btnGuardar);
        btnGuardar.setBounds(400, 480, 100, 27);

        lblTitulo.setFont(new java.awt.Font("Dialog", 0, 36));
        lblTitulo.setForeground(new java.awt.Color(0, 0, 0));
        lblTitulo.setText("Pallets en ubicaciones");
        getContentPane().add(lblTitulo);
        lblTitulo.setBounds(130, 10, 420, 43);

        txtProducto.setFont(new java.awt.Font("Dialog", 0, 12));
        txtProducto.setEnabled(false);
        getContentPane().add(txtProducto);
        txtProducto.setBounds(130, 410, 180, 25);

        lblProducto.setFont(new java.awt.Font("Dialog", 0, 12));
        lblProducto.setForeground(new java.awt.Color(0, 0, 0));
        lblProducto.setText("Producto");
        getContentPane().add(lblProducto);
        lblProducto.setBounds(40, 410, 80, 15);

        txtPallet.setFont(new java.awt.Font("Dialog", 0, 12));
        txtPallet.setEnabled(false);
        getContentPane().add(txtPallet);
        txtPallet.setBounds(440, 410, 180, 25);

        lblTipoPallet.setFont(new java.awt.Font("Dialog", 0, 12));
        lblTipoPallet.setForeground(new java.awt.Color(0, 0, 0));
        lblTipoPallet.setText("Pallet");
        getContentPane().add(lblTipoPallet);
        lblTipoPallet.setBounds(350, 410, 80, 15);

        txtTipoProducto.setFont(new java.awt.Font("Dialog", 0, 12));
        txtTipoProducto.setEnabled(false);
        getContentPane().add(txtTipoProducto);
        txtTipoProducto.setBounds(130, 440, 180, 25);

        lblTipoProducto.setFont(new java.awt.Font("Dialog", 0, 12));
        lblTipoProducto.setForeground(new java.awt.Color(0, 0, 0));
        lblTipoProducto.setText("Tipo Producto");
        getContentPane().add(lblTipoProducto);
        lblTipoProducto.setBounds(40, 440, 100, 15);

        txtVencimiento.setFont(new java.awt.Font("Dialog", 0, 12));
        txtVencimiento.setEnabled(false);
        getContentPane().add(txtVencimiento);
        txtVencimiento.setBounds(440, 440, 180, 25);

        lblVencimiento.setFont(new java.awt.Font("Dialog", 0, 12));
        lblVencimiento.setForeground(new java.awt.Color(0, 0, 0));
        lblVencimiento.setText("Vencimiento");
        getContentPane().add(lblVencimiento);
        lblVencimiento.setBounds(350, 440, 80, 15);

        cbxPiso.setFont(new java.awt.Font("Dialog", 0, 12));
        cbxPiso.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        cbxPiso.setSelectedItem(null);
        cbxPiso.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbxPisoActionPerformed(evt);
            }
        });
        getContentPane().add(cbxPiso);
        cbxPiso.setBounds(440, 370, 70, 25);

        lblPiso.setFont(new java.awt.Font("Dialog", 0, 12));
        lblPiso.setForeground(new java.awt.Color(0, 0, 0));
        lblPiso.setText("Piso");
        getContentPane().add(lblPiso);
        lblPiso.setBounds(400, 370, 64, 15);

        btnReubicar.setBackground(new java.awt.Color(240, 235, 226));
        btnReubicar.setFont(new java.awt.Font("Dialog", 0, 12));
        btnReubicar.setForeground(new java.awt.Color(0, 0, 0));
        btnReubicar.setText("Reubicar");
        btnReubicar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnReubicarActionPerformed(evt);
            }
        });
        getContentPane().add(btnReubicar);
        btnReubicar.setBounds(520, 370, 100, 27);

        lblInstrucciones.setFont(new java.awt.Font("Dialog", 0, 12));
        lblInstrucciones.setForeground(new java.awt.Color(0, 0, 0));
        lblInstrucciones.setText("Escoja un pallet (en rojo), haga clic en Reubicar y escoja una ubicación posible (en amarillo).");
        getContentPane().add(lblInstrucciones);
        lblInstrucciones.setBounds(10, 60, 660, 30);

        pnlLeyenda.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)), "Leyenda"));
        pnlLeyenda.setLayout(null);

        lblTipoPallet1.setFont(new java.awt.Font("Dialog", 0, 12));
        lblTipoPallet1.setForeground(new java.awt.Color(0, 0, 0));
        lblTipoPallet1.setText("Pallet");
        pnlLeyenda.add(lblTipoPallet1);
        lblTipoPallet1.setBounds(340, 380, 80, 15);

        lblNoDisponibles1.setFont(new java.awt.Font("Dialog", 0, 12));
        lblNoDisponibles1.setForeground(new java.awt.Color(0, 0, 0));
        lblNoDisponibles1.setText("Ubicaciones no disponibles");
        pnlLeyenda.add(lblNoDisponibles1);
        lblNoDisponibles1.setBounds(40, 10, 220, 30);

        lblUbicacionesLibres.setFont(new java.awt.Font("Dialog", 0, 12));
        lblUbicacionesLibres.setForeground(new java.awt.Color(0, 0, 0));
        lblUbicacionesLibres.setText("Ubicaciones libres");
        pnlLeyenda.add(lblUbicacionesLibres);
        lblUbicacionesLibres.setBounds(40, 30, 220, 30);

        lblUbicacionesIngresadas.setFont(new java.awt.Font("Dialog", 0, 12));
        lblUbicacionesIngresadas.setForeground(new java.awt.Color(0, 0, 0));
        lblUbicacionesIngresadas.setText("Ubicaciones de pallets ingresados");
        pnlLeyenda.add(lblUbicacionesIngresadas);
        lblUbicacionesIngresadas.setBounds(40, 50, 220, 30);

        pnlRojo.setBackground(java.awt.Color.red);
        pnlRojo.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        pnlLeyenda.add(pnlRojo);
        pnlRojo.setBounds(20, 60, 10, 12);

        pnlVerde.setBackground(java.awt.Color.green);
        pnlVerde.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        pnlLeyenda.add(pnlVerde);
        pnlVerde.setBounds(20, 40, 12, 12);

        pnlAzul.setBackground(java.awt.Color.blue);
        pnlAzul.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        pnlLeyenda.add(pnlAzul);
        pnlAzul.setBounds(20, 20, 12, 12);

        getContentPane().add(pnlLeyenda);
        pnlLeyenda.setBounds(30, 320, 280, 80);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btnCerrarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCerrarActionPerformed
        this.setSeDebeGuardar(false);
        this.setVisible(false);
        this.dispose();

}//GEN-LAST:event_btnCerrarActionPerformed

    private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGuardarActionPerformed

        int indice=0;
        ArrayList<bePallet> arrPallets=new ArrayList<bePallet>();

        for(int i=0;i<this.arrLotes.size();i++){
            arrPallets=this.arrLotes.get(i).getPallets();
            for(int j=0;j<arrPallets.size();j++){
                arrPallets.get(j).setUbicacion(this.arrUbics.get(indice));
                indice++;
            }
            this.arrLotes.get(i).setPallets(arrPallets);
        }

        this.setSeDebeGuardar(true);
        this.setVisible(false);
        this.dispose();
    }//GEN-LAST:event_btnGuardarActionPerformed

    private void btnReubicarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnReubicarActionPerformed

        try{

            if(this.getSeDebeReubicar()) return;

            if(this.ubicSeleccionada==null) return;

            this.ubicsPosibles=(new blUbicacion().dameUbicacionesPosibles(this.ubicSeleccionada.getTipoProd(),this.ubicSeleccionada.getTipo_pallet()));

            for(int i=0;i<this.ubicsPosibles.size();){
                if(estaEnElArreglo(this.ubicsPosibles.get(i),this.arrUbics)!=null){
                    this.ubicsPosibles.remove(i);
                }
                else{
                    i++;
                }
            }

            if(this.ubicsPosibles==null || (this.ubicsPosibles.size()==0)) {
                this.ubicsPosibles=null;
                this.ubicSeleccionada=null;
                return;
            }
            
            this.setSeDebeReubicar(true);

            repaint();

        }catch(Exception e){
            e.printStackTrace();
            visualHelper.mostrarMensajeError("Ha ocurrido un error");
        }
    }//GEN-LAST:event_btnReubicarActionPerformed

    private void cbxPisoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbxPisoActionPerformed
        this.pisoActual=this.cbxPiso.getSelectedIndex()+1;
        if(!this.getSeDebeReubicar()) this.ubicSeleccionada=null;
        repaint();
    }//GEN-LAST:event_cbxPisoActionPerformed

    private void formMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMouseClicked

                int corX=evt.getX();
                int corY=evt.getY();
                int numCol = blh.calcularNumeroColumnas(racksXFila, tamRack);
		int numFil = blh.calcularNumeroFilas(racksXCol);

                try{

                    Point seccion=new Point();
                    beUbicacion ubic=null;
                    seccion.x=(corX-puntoCentrado.x)/TAM_UNIT;
                    seccion.y=(corY-puntoCentrado.y)/TAM_UNIT;

                    //if(corX>=puntoCentrado.x+TAM_UNIT &&corX<(puntoCentrado.x-TAM_UNIT+(numCol*TAM_UNIT)) && corY>=puntoCentrado.y+TAM_UNIT && corY<puntoCentrado.y-TAM_UNIT+(numFil*TAM_UNIT)){
                    if(corX>=puntoCentrado.x+TAM_UNIT && corX<(puntoCentrado.x-TAM_UNIT+(numCol*TAM_UNIT))
                            && corY>=puntoCentrado.y+TAM_UNIT && corY<puntoCentrado.y-TAM_UNIT+(numFil*TAM_UNIT)
                            && corX>=puntoOrigen.x && corX<puntoFin.x && corY>=puntoOrigen.y && corY<puntoFin.y){

                        ubic=esCoordUbicacion(seccion.x,seccion.y);
                        if(ubic!=null){

                            // ELEGIR LA UBICACION DONDE SE REUBICARA

                            if(this.getSeDebeReubicar()){

                                beUbicacion ubicNext=(new blUbicacion().dameUbicacionSegunCoordenadas(seccion.x, seccion.y, pisoActual));

                                if(ubicNext.getIdUbicacion()!=this.ubicSeleccionada.getIdUbicacion()){

                                    if(estaEnElArreglo(ubicNext,this.ubicsPosibles)==null) return;

                                    int result=visualHelper.mostrarPreguntaSiNo("Desea reubicar el pallet en esta ubicación?");
                                    if(result==JOptionPane.NO_OPTION){
                                        return;
                                    }

                                    for(int i=0;i<this.arrUbics.size();i++){
                                        if(this.arrUbics.get(i)==this.ubicSeleccionada){

                                            ubicNext.setIdProducto(this.ubicSeleccionada.getIdProducto());
                                            ubicNext.setTipoProd(this.ubicSeleccionada.getTipoProd());
                                            ubicNext.setIdPallet(this.ubicSeleccionada.getIdPallet());
                                            ubicNext.setTipo_pallet(this.ubicSeleccionada.getTipo_pallet());
                                            ubicNext.setFechaVencimiento(this.ubicSeleccionada.getFechaVencimiento());

                                            this.arrUbics.set(i, ubicNext);
                                            break;
                                        }
                                    }

                                }



                                this.ubicSeleccionada=null;
                                this.ubicsPosibles=null;

                                setearValores();

                                this.setSeDebeReubicar(false);

                                repaint();

                                return;

                            }

                            //ELEGIR UNA UBICACION A REUBICAR


                            this.ubicSeleccionada=(new blUbicacion().dameUbicacionSegunCoordenadas(seccion.x, seccion.y, pisoActual));

                            this.ubicSeleccionada=estaEnElArreglo(this.ubicSeleccionada,this.arrUbics);

                            if(this.ubicSeleccionada==null){
                                return;
                            }

                            SimpleDateFormat formatter = new SimpleDateFormat("dd/MMM/yyyy");

                            this.txtProducto.setText((new blProducto().obtenerProductoPorCodigo(this.ubicSeleccionada.getIdProducto())).getNombre());
                            this.txtTipoProducto.setText((new blProducto().devuelveTipoProducto(this.ubicSeleccionada.getTipoProd()).getDescripcion()));
                            this.txtPallet.setText(blh.dameNombreEstado(this.ubicSeleccionada.getTipo_pallet(), "PALLET"));
                            this.txtVencimiento.setText(formatter.format(this.ubicSeleccionada.getFechaVencimiento()));



                            repaint();
                        }
                        //System.out.println(this.numCol + " "+this.getNumFil()+" "+corX+" "+ corY);
                    }

                }catch(Exception e){
                    e.printStackTrace();
                    visualHelper.mostrarMensajeError("Ocurrio un error");
                }

    }//GEN-LAST:event_formMouseClicked

    private void formKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_formKeyPressed

    }//GEN-LAST:event_formKeyPressed

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            private ArrayList<beLote> ar;
            public void run() {

                dlgMostrarIngreso dialog = new dlgMostrarIngreso(new javax.swing.JFrame(), true,ar);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
                    @Override
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }



    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnCerrar;
    private javax.swing.JButton btnGuardar;
    private javax.swing.JButton btnReubicar;
    private javax.swing.JComboBox cbxPiso;
    private javax.swing.JLabel lblInstrucciones;
    private javax.swing.JLabel lblNoDisponibles1;
    private javax.swing.JLabel lblPiso;
    private javax.swing.JLabel lblProducto;
    private javax.swing.JLabel lblTipoPallet;
    private javax.swing.JLabel lblTipoPallet1;
    private javax.swing.JLabel lblTipoProducto;
    private javax.swing.JLabel lblTitulo;
    private javax.swing.JLabel lblUbicacionesIngresadas;
    private javax.swing.JLabel lblUbicacionesLibres;
    private javax.swing.JLabel lblVencimiento;
    private javax.swing.JPanel pnlAzul;
    private javax.swing.JPanel pnlLeyenda;
    private javax.swing.JPanel pnlRojo;
    private javax.swing.JPanel pnlVerde;
    private javax.swing.JTextField txtPallet;
    private javax.swing.JTextField txtProducto;
    private javax.swing.JTextField txtTipoProducto;
    private javax.swing.JTextField txtVencimiento;
    // End of variables declaration//GEN-END:variables


    private beUbicacion esCoordUbicacion(int x,int y){
        beCoordenada coord=null;
        for(int i=0;i<this.ubicsDisponibles.size();i++){
            coord=this.ubicsDisponibles.get(i).getCoordenadas();
            if(coord.getxEnMapa()==x && coord.getyEnMapa()==y){
                return this.ubicsDisponibles.get(i);
            }
        }
        return null;


    }

    private boolean esMismaCoordenada(beUbicacion u1, beUbicacion u2){
        beCoordenada c1=u1.getCoordenadas();
        beCoordenada c2=u2.getCoordenadas();

        if((c1.getxEnMapa()==c2.getxEnMapa()) && (c1.getxEnMapa()==c2.getxEnMapa())){
            return true;
        }

        return false;
    }

    private boolean esMismaCoordenadaPiso(beUbicacion u1, beUbicacion u2){
        beCoordenada c1=u1.getCoordenadas();
        beCoordenada c2=u2.getCoordenadas();

        if((c1.getxEnMapa()==c2.getxEnMapa()) && (c1.getxEnMapa()==c2.getxEnMapa()) && (c1.getPiso()==c2.getPiso())){
            return true;
        }

        return false;
    }

    private beUbicacion estaEnElArreglo(beUbicacion u,ArrayList<beUbicacion> arr){
        if(arrUbics==null) return null;

        beCoordenada cU=u.getCoordenadas();
        beCoordenada cArr=null;

        for(int i=0;i<arr.size();i++){
            cArr=arr.get(i).getCoordenadas();
            if((cArr.getxEnMapa()==cU.getxEnMapa()) && (cArr.getyEnMapa()==cU.getyEnMapa()) && (cArr.getPiso()==cU.getPiso()))
                return arr.get(i);
        }
        return null;
    }

    private void llenarComboPiso() throws Exception{
        int maxPiso=0;
        beCoordenada c=new beCoordenada();

        maxPiso=(new blRack().obtenerRack(1).getCantPiso());

        if(maxPiso>0){
            ArrayList<beCombo> comboPiso = new ArrayList<beCombo>();
            beCombo cmb = new beCombo();
            for (int i = 0; i < maxPiso; i++) {
                cmb = new beCombo();
                cmb.setId_dato(i);
                cmb.setNom_dato(String.valueOf(i+1));
                cmb.setNom_combo("PISORK");
                comboPiso.add(cmb);
            }
            this.cbxPiso.setModel(blh.ComboBoxItem(comboPiso));
            this.pisoActual=1;
        }

    }

    private ArrayList<beUbicacion> extraerUbicsDeUnPiso(ArrayList<beUbicacion> arr,int p){
        ArrayList<beUbicacion> arr2=new ArrayList<beUbicacion>();
        beCoordenada c=new beCoordenada();

        if((p<=0) || (p>this.cbxPiso.getItemCount())) return null;
        if(arr==null) return null;

        for(int i=0;i<arr.size();i++){
            c=arr.get(i).getCoordenadas();
            if(c.getPiso()==p) arr2.add(arr.get(i));
        }

        return arr2;

    }

    private void setearValores() {
        this.txtPallet.setText("");
        this.txtProducto.setText("");
        this.txtTipoProducto.setText("");
        this.txtVencimiento.setText("");
    }

    public void keyTyped(KeyEvent e) {
        
    }

    public void keyPressed(KeyEvent evt) {
        int numCol = blh.calcularNumeroColumnas(racksXFila, tamRack);
         int numFil = blh.calcularNumeroFilas(racksXCol);

         if (evt.getKeyCode() == KeyEvent.VK_UP) {
            if(this.puntoCentrado.y<this.puntoOrigen.y){
		this.puntoCentrado.y+=TAM_UNIT;
            }
         }
         else if (evt.getKeyCode() == KeyEvent.VK_DOWN) {
            if((this.puntoCentrado.y+numFil*TAM_UNIT)>(this.puntoFin.y)){
		this.puntoCentrado.y-=TAM_UNIT;
            }
         }
         else if (evt.getKeyCode() == KeyEvent.VK_LEFT) {
            if(this.puntoCentrado.x<this.puntoOrigen.x){
		this.puntoCentrado.x+=TAM_UNIT;
            }

         }
         else if (evt.getKeyCode() == KeyEvent.VK_RIGHT) {
            if((this.puntoCentrado.x+numCol*TAM_UNIT)>(this.puntoFin.x)){
		this.puntoCentrado.x-=TAM_UNIT;
            }
         }

         repaint();
    }

    public void keyReleased(KeyEvent e) {
        
    }

    public void mouseClicked(MouseEvent e) {
        
    }

    public void mousePressed(MouseEvent e) {
        
    }

    public void mouseReleased(MouseEvent e) {
        
    }

    public void mouseEntered(MouseEvent e) {
        this.requestFocus();
    }

    public void mouseExited(MouseEvent e) {
        
    }


};
